/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.mapagay.entidades.usuario;

import br.com.mapagay.exceptions.EntidadeNaoEncontrada;
import java.sql.Connection;

/**
 *
 * @author Lauro
 */
public abstract class Entidade {
    
    private Integer id;

    public Entidade() {
    }

    public Entidade(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
    
    public boolean salvar(){
        return salvar(null);
    }
    
    public boolean excluir(){
        return excluir(null);
    }
    
    public boolean salvar(Connection conexao){
        if(this.id == null){
            return inserir(conexao);
        }else{
            return atualizar(conexao);
        }
    }
    
    protected abstract boolean buscar(Connection conexao) throws EntidadeNaoEncontrada;
    
    protected abstract boolean inserir(Connection conexao);
    
    protected abstract boolean atualizar(Connection conexao);
    
    protected abstract boolean excluir(Connection conexao);
}
